API Integration এবং Web Scraping এক্সেল ম্যাক্রো (Excel Macros) ব্যবহার করে আপনি সহজেই ডেটা এক্সট্র্যাক্ট করতে পারেন বা অন্য অ্যাপ্লিকেশন বা ওয়েবসাইট থেকে ডেটা সংগ্রহ করতে পারেন। VBA (Visual Basic for Applications) কোডের মাধ্যমে আপনি API এর মাধ্যমে ডেটা আহরণ এবং ওয়েব পেজ থেকে ডেটা স্ক্র্যাপ করতে পারবেন, যা এক্সেল ব্যবহারকারীদের জন্য অত্যন্ত কার্যকরী হতে পারে।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে VBA কোড ব্যবহার করে API Integration এবং Web Scraping করা যায়।
১. API Integration with VBA
API Integration হল একটি প্রক্রিয়া যা কোনো ওয়েব সার্ভিস বা অন্য অ্যাপ্লিকেশন থেকে ডেটা আনার জন্য API কল ব্যবহার করে। এক্সেল VBA-তে API Integration করার জন্য সাধারণত XMLHttpRequest বা WinHTTP ব্যবহার করা হয়। এই প্রক্রিয়ায়, আপনি কোনো ওয়েব সার্ভিসের RESTful API অথবা SOAP API কল করতে পারেন এবং ডেটা এক্সট্র্যাক্ট করতে পারেন।
উদাহরণ: API থেকে ডেটা আনা (RESTful API)
ধরা যাক, আপনি একটি Weather API ব্যবহার করে সেখান থেকে ডেটা আনার জন্য VBA কোড লিখতে চান। এর জন্য আপনাকে একটি GET রিকোয়েস্ট করতে হবে এবং JSON ফরম্যাটে রিটার্ন হওয়া ডেটা এক্সেল শীটে পেস্ট করতে হবে।
প্রথমে আপনাকে HTTP রিকোয়েস্ট পাঠানোর জন্য VBA কোডে Microsoft XML, v6.0 লাইব্রেরি অ্যাড করতে হবে:
- VBA Editor খুলুন (Alt + F11)।
- Tools > References-এ গিয়ে
Microsoft XML, v6.0লাইব্রেরি টিক চিহ্ন দিন।
এখন, আপনি নিচের কোডটি ব্যবহার করতে পারেন:
Sub GetWeatherData()
Dim http As Object
Dim JSON As Object
Dim url As String
Dim city As String
Dim apiKey As String
' API endpoint এবং প্যারামিটার
city = "London"
apiKey = "your_api_key_here"
url = "http://api.openweathermap.org/data/2.5/weather?q=" & city & "&appid=" & apiKey
' HTTP রিকোয়েস্ট সেট আপ
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
' JSON ডেটা প্রক্রিয়া
Set JSON = JsonConverter.ParseJson(http.responseText)
' ডেটা এক্সেল শীটে পেস্ট করা
Sheets("Sheet1").Range("A1").Value = "City"
Sheets("Sheet1").Range("B1").Value = JSON("name")
Sheets("Sheet1").Range("A2").Value = "Temperature"
Sheets("Sheet1").Range("B2").Value = JSON("main")("temp")
Sheets("Sheet1").Range("A3").Value = "Weather"
Sheets("Sheet1").Range("B3").Value = JSON("weather")(1)("description")
End Sub
ব্যাখ্যা:
- CreateObject("MSXML2.XMLHTTP"): এটি HTTP রিকোয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়।
- http.Open "GET", url, False: এখানে GET মেথড দিয়ে API থেকে ডেটা নেয়া হচ্ছে।
- JsonConverter.ParseJson: JSON ফরম্যাটে পাওয়া ডেটা ভাঙতে JsonConverter ব্যবহার করা হয়েছে (এটি আলাদাভাবে ইম্পোর্ট করতে হবে)।
- Sheets("Sheet1").Range: API থেকে পাওয়া ডেটা এক্সেল শীটে পেস্ট করা হচ্ছে।
২. Web Scraping with VBA
Web Scraping হল একটি প্রক্রিয়া যেখানে আপনি ওয়েব পেজ থেকে নির্দিষ্ট তথ্য সংগ্রহ করেন। এক্সেল VBA ব্যবহার করে ওয়েব পেজ থেকে ডেটা স্ক্র্যাপ করার জন্য Internet Explorer (IE) বা HTMLDocument অবজেক্ট ব্যবহার করা হয়। এই প্রক্রিয়ায় আপনি HTML এর মাধ্যমে ওয়েব পেজের বিভিন্ন উপাদান যেমন টেবিল, লিঙ্ক বা টেক্সট এক্সট্র্যাক্ট করতে পারেন।
উদাহরণ: Web Scraping using VBA (HTMLDocument)
ধরা যাক, আপনি একটি ওয়েব পেজ থেকে টেবিলের ডেটা স্ক্র্যাপ করতে চান। এখানে আমরা একটি ওয়েব পেজ থেকে Stock Price স্ক্র্যাপ করার উদাহরণ দেখাবো।
Sub WebScrapingExample()
Dim ie As Object
Dim html As Object
Dim stockPrice As String
Dim url As String
' Web URL
url = "https://finance.yahoo.com/quote/MSFT" ' Microsoft stock page
' Internet Explorer (IE) তৈরি করা
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = False ' IE উইন্ডো অদৃশ্য থাকবে
ie.navigate url
' ওয়েব পেজের লোড হওয়া পর্যন্ত অপেক্ষা
Do While ie.Busy Or ie.readyState <> 4
DoEvents
Loop
' HTMLDocument অবজেক্টে ওয়েব পেজ লোড
Set html = ie.document
' Stock Price এর তথ্য স্ক্র্যাপ করা
stockPrice = html.getElementsByClassName("Trsdu(0.3s)")(0).innerText
' এক্সেল শীটে ডেটা পেস্ট করা
Sheets("Sheet1").Range("A1").Value = "Stock Price"
Sheets("Sheet1").Range("B1").Value = stockPrice
' IE বন্ধ করা
ie.Quit
Set ie = Nothing
Set html = Nothing
End Sub
ব্যাখ্যা:
- CreateObject("InternetExplorer.Application"): এটি একটি Internet Explorer (IE) অবজেক্ট তৈরি করে।
- ie.navigate url: এটি URL দিয়ে ওয়েব পেজ লোড করে।
- html.getElementsByClassName("Trsdu(0.3s)"): এটি ওয়েব পেজের টেবিল থেকে স্টক প্রাইসের ক্লাস নাম ব্যবহার করে ডেটা এক্সট্র্যাক্ট করে।
- Do While ie.Busy Or ie.readyState <> 4: ওয়েব পেজ লোড না হওয়া পর্যন্ত কোডটি অপেক্ষা করবে।
৩. JSON Data Processing
API বা ওয়েবসাইট থেকে ডেটা JSON ফরম্যাটে পাওয়ার পর, এক্সেল VBA তে JSON ডেটা প্রসেস করার জন্য একটি JSON parser প্রয়োজন। VBA তে JSON ডেটা প্রসেস করতে JsonConverter লাইব্রেরি ব্যবহার করা হয়, যা ডেটাকে একটি VBA অ্যারে বা ডিকশনারিতে রূপান্তর করতে সাহায্য করে।
JsonConverter ব্যবহার করা
- VBA-তে JSON Parsing এর জন্য আপনাকে প্রথমে JsonConverter ইন্সটল করতে হবে। এটি VBA-JSON নামে পরিচিত।
- VBA-JSON GitHub Repository থেকে JsonConverter.bas ডাউনলোড করে আপনার VBA প্রজেক্টে যুক্ত করুন।
- এরপর, আপনি নিম্নলিখিত কোড ব্যবহার করে JSON ডেটা প্রসেস করতে পারেন:
Sub ProcessJsonData()
Dim json As Object
Dim apiResponse As String
' API Response string
apiResponse = "{ ""name"": ""John"", ""age"": 30, ""city"": ""New York"" }"
' JSON Data Parse করা
Set json = JsonConverter.ParseJson(apiResponse)
' JSON ডেটার মান অ্যাক্সেস করা
MsgBox "Name: " & json("name") & ", Age: " & json("age") & ", City: " & json("city")
End Sub
এখানে:
- JsonConverter.ParseJson: JSON ডেটা পার্স করে একটি ডিকশনারিতে রূপান্তর করা হয়েছে।
- json("name"): ডেটার নির্দিষ্ট ফিল্ডের মান এক্সেস করা হচ্ছে।
সারাংশ
API Integration এবং Web Scraping এক্সেল ম্যাক্রো ব্যবহারের মাধ্যমে আপনি বাহ্যিক ডেটাসেট বা ওয়েবসাইট থেকে ডেটা এক্সট্র্যাক্ট করে এক্সেল শীটে অটোমেটিকভাবে পেস্ট করতে পারেন। API Integration করার জন্য XMLHttpRequest ব্যবহার করা হয়, এবং Web Scraping করার জন্য Internet Explorer এবং HTMLDocument অবজেক্ট ব্যবহার করা হয়। এছাড়া, JSON Parsing এর জন্য JsonConverter ব্যবহার করে API থেকে প্রাপ্ত ডেটা সহজে এক্সেল শীটে ব্যবহার করা যায়।
Read more